package com.zenithmind.chat.service;

import com.zenithmind.chat.pojo.entity.AiChat;
import com.zenithmind.chat.pojo.entity.AiChatMessage;
import com.zenithmind.chat.pojo.vo.AiChatVO;

import java.util.List;

/**
 * AI对话缓存服务接口
 * 遵循单一职责原则，专门负责缓存管理
 */
public interface AiChatCacheService {
    
    /**
     * 缓存对话详情
     * 
     * @param chatId 对话ID
     * @param chatVO 对话VO
     */
    void cacheChatDetail(String chatId, AiChatVO chatVO);
    
    /**
     * 获取缓存的对话详情
     * 
     * @param chatId 对话ID
     * @return 对话VO，如果不存在则返回null
     */
    AiChatVO getCachedChatDetail(String chatId);
    
    /**
     * 缓存对话历史消息
     * 
     * @param chatId 对话ID
     * @param messages 消息列表
     */
    void cacheChatHistory(String chatId, List<AiChatMessage> messages);
    
    /**
     * 获取缓存的对话历史消息
     * 
     * @param chatId 对话ID
     * @return 消息列表，如果不存在则返回null
     */
    List<AiChatMessage> getCachedChatHistory(String chatId);
    
    /**
     * 缓存用户对话列表
     * 
     * @param userId 用户ID
     * @param chats 对话列表
     */
    void cacheUserChatList(String userId, List<AiChatVO> chats);
    
    /**
     * 获取缓存的用户对话列表
     * 
     * @param userId 用户ID
     * @return 对话列表，如果不存在则返回null
     */
    List<AiChatVO> getCachedUserChatList(String userId);
    
    /**
     * 清除对话相关缓存
     * 
     * @param chatId 对话ID
     */
    void evictChatCache(String chatId);
    
    /**
     * 清除用户相关缓存
     * 
     * @param userId 用户ID
     */
    void evictUserCache(String userId);
    
    /**
     * 清除所有缓存
     */
    void evictAllCache();
}
